// https: // iai.sh.cn/problem/687
#include <bits/stdc++.h>
using namespace std;

struct TreeNode {
  char val;
  TreeNode *left;
  TreeNode *right;
  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  // C++11加入了nullptr，可以保证在任何情况下都代表空指针，而不会像NULL那样可能被宏定义覆盖
};

TreeNode *buildTree(const string &s1, const string &s2) {
  // 检查输入字符串是否为空
  if (s1.empty())
    return nullptr;
  char rootVal = s1[0];
  int rootIndex = s2.find(rootVal);

  TreeNode *root = new TreeNode(rootVal);
  // 递归构建左子树和右子树
  root->left = buildTree(s1.substr(1, rootIndex), s2.substr(0, rootIndex));
  root->right = buildTree(s1.substr(rootIndex + 1), s2.substr(rootIndex + 1));
  return root;
}

 
void postorderTraversal(TreeNode *root) {
  // 如果当前节点为空，直接返回
  if (root == nullptr)
    return;

  // 递归遍历左子树
  postorderTraversal(root->left);
  // 递归遍历右子树
  postorderTraversal(root->right);
  // 输出当前节点的值
  cout << root->val;
}
int main() {

  string s1, s2;
  cin >> s1 >> s2;

  TreeNode *root = buildTree(s1, s2);

  postorderTraversal(root);
  
  cout << endl;
}
